﻿using System;
using System.Drawing;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Media;
using System.Collections.ObjectModel;
using System.Data;
using System.Windows.Media.Imaging;
using System.ComponentModel;
using System.Diagnostics;
using System.Windows.Controls;
using System.Globalization;
using produccion.modelo;
using produccion.AccesoDatos;
using produccion.clases;
using produccion.modulos;
using produccion.reportes;
using System.Windows.Input;
using System.Collections.Specialized;

namespace produccion.vistamodelo
{
    class VMMontajeaDespachos : ViewModelBase
    {
        #region Campos
        private MDOgeneral _mod = new MDOgeneral();
        private MMontajeaDespachos _resumen = new MMontajeaDespachos();
        #endregion

        #region Constructor
        public VMMontajeaDespachos()
            {
                try
                {
                    lisresumen.Clear();
                    cargarResumen();
                    if (MDOgeneral.conexion == null || MDOgeneral.conexion.State == ConnectionState.Closed)
                    {
                        MDOgeneral.conectar();
                    }
                    strTituloVentana = "Montaje a Despachos - Usuario: " + MDOgeneral.usuario + " - [FRMMontajeaDespachos]" + " IMP - " + MDOgeneral.strImpresionLPT2;
                }
                catch (Exception ex) { MessageBox.Show(ex.Message); }
            }
        #endregion

        #region Propiedades
        
        private string _strTituloVentana;
        public string strTituloVentana
        {
            get { return _strTituloVentana; }
            set { _strTituloVentana = value; base.OnPropertyChanged("strTituloVentana"); }
        }

        private List<MMontajeaDespachos.resumen> _lisresumen = new List<MMontajeaDespachos.resumen>();
        public List<MMontajeaDespachos.resumen> lisresumen
        {
            get { return _lisresumen; }
            set { _lisresumen = value; base.OnPropertyChanged("lisresumen"); }
        }

        private MMontajeaDespachos.resumen _selresumen = new MMontajeaDespachos.resumen();
        public MMontajeaDespachos.resumen selresumen
        {
            get { return _selresumen; }
            set 
            { 
                _selresumen = value; 
                base.OnPropertyChanged("selresumen");
                if (selresumen != null)
                    cargarDetalle();
            }
        }

        private List<MMontajeaDespachos.detalle> _lisdetalle = new List<MMontajeaDespachos.detalle>();
        public List<MMontajeaDespachos.detalle> lisdetalle
        {
            get { return _lisdetalle; }
            set { _lisdetalle = value; base.OnPropertyChanged("lisdetalle"); }
        }

        private MMontajeaDespachos.detalle _seldetalle = new MMontajeaDespachos.detalle();
        public MMontajeaDespachos.detalle seldetalle
        {
            get { return _seldetalle; }
            set 
            { 
                _seldetalle = value;  
                base.OnPropertyChanged("seldetalle");
                if (seldetalle != null)
                {
                    visorFotoReferencia.strCodigo = seldetalle.strCodigo.Substring(0,4);
                    visorFotoReferencia.strColor = seldetalle.strColor;
                }
            }
        }

        private Int32 _numTotal;
        public Int32 numTotal
        {
            get { return _numTotal; }
            set { _numTotal = value; base.OnPropertyChanged("numTotal"); }
        }

        private VMvisorFotoReferencia _visorFotoReferencia = new VMvisorFotoReferencia();
        public VMvisorFotoReferencia visorFotoReferencia
        {
            get { return _visorFotoReferencia; }
            set { _visorFotoReferencia = value; base.OnPropertyChanged("visorFotoReferencia"); }
        }


        #endregion

        #region Comandos
        
        RelayCommand _cmdSalir;
        public ICommand cmdSalir
        {
            get
            {
                if (_cmdSalir == null)
                {
                    _cmdSalir = new RelayCommand(Salir);
                }
                return _cmdSalir;
            }
        }

        RelayCommand _cmdGrabar;
        public ICommand cmdGrabar
        {
            get
            {
                if (_cmdGrabar == null)
                {
                    _cmdGrabar = new RelayCommand(r => grabar());
                }
                return _cmdGrabar;
            }
        }

        RelayCommand _cmdBorrar;
        public ICommand cmdBorrar
        {
            get
            {
                if (_cmdBorrar == null)
                {
                    _cmdBorrar = new RelayCommand(r => borrar());
                }
                return _cmdBorrar;
            }
        }
        RelayCommand _cmdEliminar;
        public ICommand cmdEliminar
        {
            get
            {
                if (_cmdEliminar == null)
                {
                    _cmdEliminar = new RelayCommand(r => Eliminar());
                }
                return _cmdEliminar;
            }
        }


        RelayCommand _cmdImprimir;
        public ICommand cmdImprimir
        {
            get
            {
                if (_cmdImprimir == null)
                {
                    if (selresumen != null)
                    {
                        if (selresumen.numLote > 0)
                            _cmdImprimir = new RelayCommand(r => imprimir(" "));
                    }
                }
                return _cmdImprimir;
            }
        }

        #endregion

        #region Metodos

        void cargarDetalle()
        {
            try
            {

                if (visorFotoReferencia != null)
                {
                    if (visorFotoReferencia.strCodigo != null)
                    {
                        visorFotoReferencia.strCodigo = "";
                        visorFotoReferencia.strColor = "";
                        base.OnPropertyChanged("visorFotoReferencia");
                    }
                }

                if (selresumen != null)
                {
                    MDOgeneral.spComando.CommandText = "SP_CARGARLOTEMD";
                    MDOgeneral.spComando.Connection = MDOgeneral.conexion;
                    MDOgeneral.spComando.CommandType = CommandType.StoredProcedure;
                    MDOgeneral.spComando.Parameters.Clear();

                    //Input
                    MDOgeneral.spComando.Parameters.Add("pnu_lote", Oracle.DataAccess.Client.OracleDbType.Int32).Value = selresumen.numLote;
                    MDOgeneral.spComando.Parameters["pnu_lote"].Direction = ParameterDirection.Input;

                    //Output
                    MDOgeneral.spComando.Parameters.Add("pva_result", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output;
                    MDOgeneral.spComando.Parameters.Add("pva_errusu", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output;
                    MDOgeneral.spComando.ExecuteNonQuery();
                    string c = MDOgeneral.spComando.Parameters["pva_errusu"].Value.ToString();

                    numTotal = 0;
                    int numContador = 1;

                    string query = "select NROORD_TMP,CODREF_TMP,CODCOL_TMP,NOMREF_TMP,NOMCOL_TMP,TALREF_TMP,T1_TMP,T2_TMP,T3_TMP,T4_TMP,T5_TMP,T6_TMP,T7_TMP,T8_TMP,T9_TMP,T10_TMP,T11_TMP,T12_TMP,T13_TMP,T14_TMP,T15_TMP,T16_TMP,T17_TMP,T18_TMP,T19_TMP,T20_TMP,TOT_TMP from tmplotep order by nroord_tmp, codref_tmp, codcol_tmp ";
                    DataTable val = _mod.consulta(query);
                    List<MMontajeaDespachos.detalle> lisdet = new List<MMontajeaDespachos.detalle>();
                    foreach (DataRow r in val.Rows)
                    {
                        numTotal = numTotal + Convert.ToInt32(r["TOT_TMP"]);
                        if (numContador == 1)
                        {
                            visorFotoReferencia.strCodigo = r["CODREF_TMP"].ToString();
                            visorFotoReferencia.strColor = r["CODCOL_TMP"].ToString();
                            numContador = 2;
                        }

                        lisdet.Add(new MMontajeaDespachos.detalle
                        {
                            strOrden = r["NROORD_TMP"].ToString().Trim(),
                            strCodigo = r["CODREF_TMP"].ToString() + r["CODCOL_TMP"].ToString(),
                            strDescripcion = r["NOMREF_TMP"].ToString(),
                            strColor = r["CODCOL_TMP"].ToString(),
                            strNombreColor = r["NOMCOL_TMP"].ToString(),
                            strTalla = r["TALREF_TMP"].ToString(),
                            T1 = Convert.ToInt32(r["T1_TMP"]),
                            T2 = Convert.ToInt32(r["T2_TMP"]),
                            T3 = Convert.ToInt32(r["T3_TMP"]),
                            T4 = Convert.ToInt32(r["T4_TMP"]),
                            T5 = Convert.ToInt32(r["T5_TMP"]),
                            T6 = Convert.ToInt32(r["T6_TMP"]),
                            T7 = Convert.ToInt32(r["T7_TMP"]),
                            T8 = Convert.ToInt32(r["T8_TMP"]),
                            T9 = Convert.ToInt32(r["T9_TMP"]),
                            T10 = Convert.ToInt32(r["T10_TMP"]),
                            T11 = Convert.ToInt32(r["T11_TMP"]),
                            T12 = Convert.ToInt32(r["T12_TMP"]),
                            T13 = Convert.ToInt32(r["T13_TMP"]),
                            T14 = Convert.ToInt32(r["T14_TMP"]),
                            T15 = Convert.ToInt32(r["T15_TMP"]),
                            T16 = Convert.ToInt32(r["T16_TMP"]),
                            T17 = Convert.ToInt32(r["T17_TMP"]),
                            T18 = Convert.ToInt32(r["T18_TMP"]),
                            T19 = Convert.ToInt32(r["T19_TMP"]),
                            T20 = Convert.ToInt32(r["T20_TMP"]),
                            numTotal = Convert.ToInt32(r["TOT_TMP"])
                        });
                    }

                    lisdetalle = lisdet;
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        void cargarResumen()
        {
            try
            {
                lisresumen.Clear();
                lisresumen = new List<MMontajeaDespachos.resumen>(_resumen.listarresumen());
                if (lisresumen.Count > 0)
                {
                    selresumen = lisresumen.First();
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        void grabar()
        {
            try
            {

                MDOgeneral.spComando.CommandText = "SP_GRABARLOTEMD";
                MDOgeneral.spComando.Connection = MDOgeneral.conexion;
                MDOgeneral.spComando.CommandType = CommandType.StoredProcedure;
                MDOgeneral.spComando.Parameters.Clear();

                //Input
                MDOgeneral.spComando.Parameters.Add("pnu_lote", Oracle.DataAccess.Client.OracleDbType.Int32).Value = selresumen.numLote;
                MDOgeneral.spComando.Parameters["pnu_lote"].Direction = ParameterDirection.Input;

                //Output
                MDOgeneral.spComando.Parameters.Add("pva_result", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output;
                MDOgeneral.spComando.Parameters.Add("pva_errusu", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output;
                MDOgeneral.spComando.ExecuteNonQuery();
                string strEntrega = MDOgeneral.spComando.Parameters["pva_errusu"].Value.ToString();

                if (MDOgeneral.spComando.Parameters["pva_result"].Value.ToString().Trim() == "0")
                    MessageBox.Show("Hubo una inconsistencia en la transacción de bases de datos." + MDOgeneral.spComando.Parameters["pva_errusu"].Value.ToString(), "Advertencia", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK);
                else
                {
                    MessageBox.Show("Se grabo el lote numero: " + selresumen.numLote + " y se genero la entrega numero: " + strEntrega, "Confirmación", MessageBoxButton.OK, MessageBoxImage.Information, MessageBoxResult.OK);

                    imprimir(strEntrega);

                    if (visorFotoReferencia != null)
                    {
                        if (visorFotoReferencia.strCodigo != null)
                        {
                            visorFotoReferencia.strCodigo = "";
                            visorFotoReferencia.strColor = "";
                            base.OnPropertyChanged("visorFotoReferencia");
                        }
                    }

                    lisdetalle.Clear();

                    cargarResumen();
                }


            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        void borrar()
        {
            try
            {
                if (lisresumen.Count > 0)
                {
                    if (selresumen != null)
                    {
                        MessageBoxResult logResult = MessageBox.Show("Esta seguro que desea eliminar el registro?", "Borrar registro", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No);
                        if (logResult == MessageBoxResult.Yes)
                        {
                            string query1 = "delete from lectpend where lote_lpn = " + Convert.ToString(selresumen.numLote) + " ; commit ;";
                            int intResultado = _mod.comando(query1);
                        }                         
                    }
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }
        void Eliminar()
        {
            String StrLote = selresumen.numLote.ToString();//FJRF - Cargamos el lote

            #region FJRF - ArmamosLaPregunta
            String StrCaptionBox = "Confirmation";
            String StrMensajeBox = "¿Desea eliminar el lote " + StrLote + " ?";
            MessageBoxButton buttons = MessageBoxButton.YesNo;
            MessageBoxImage icon = MessageBoxImage.Question;
            #endregion

            if (MessageBox.Show(StrMensajeBox, StrCaptionBox, buttons, icon) == MessageBoxResult.Yes)
            {
                try//FJRF - Controlamos el error
                {
                    Mouse.OverrideCursor = Cursors.Wait;//FJRF - Ponemos una esfera en timpo de espera

                    MDOgeneral.strConsultasTemporalesSql1 = "UPDATE LECTPEND SET ESTADO_LPN = 'X' WHERE LOTE_LPN = '" + StrLote + "' AND TIPO_LPN = 'MD' ";//FJRF - Armamos la consulta
                    _mod.consulta(MDOgeneral.strConsultasTemporalesSql1);//FJRF - Ejecutamos la consulta

                    cargarResumen();

                    MessageBox.Show("Se elimino el lote " + StrLote + " ", "PROCESO EXITOSO", MessageBoxButton.OK, MessageBoxImage.Information);//FJRF - Enviamos un mensaje al usuario

                    Mouse.OverrideCursor = Cursors.Arrow;//FJRF - Ponemos el cursor de forma normal nuevamente
                }
                catch (Exception ex)//FJRF - Si se presenta algun error hacemos lo siguiente
                {
                    MessageBox.Show(ex.Message, "PROCESO CANCELADO", MessageBoxButton.OK, MessageBoxImage.Error);//FJRF - Enviamos un mensaje al usuario
                    Mouse.OverrideCursor = Cursors.Arrow;//FJRF - Ponemos el cursor de forma normal nuevamente
                }
            }
            else//FJRF - Si la respuesta es negativa
            {
                MessageBox.Show("No se elimino el lote " + StrLote + " ", "PROCESO CANCELADO", MessageBoxButton.OK, MessageBoxImage.Error);//FJRF - Enviamos un mensaje al usuario
                Mouse.OverrideCursor = Cursors.Arrow;//FJRF - Ponemos el cursor de forma normal nuevamente
            }

        }

        public void imprimir(string strEntrega)
        {
            string StrComandoDado, StrRutaPlano, StrNombreDocumento, StrRutaImpresionLPT2, StrLineaAEjecutar;
            try
            {
                if (selresumen != null)
                {
                    if (selresumen.numLote > 0)
                    {
                        if (String.IsNullOrEmpty(MDOgeneral.strImpresionLPT2))
                        {
                            ImprimirCystalReport(strEntrega);
                        }
                        else
                        {
                            MDOgeneral.spComando.CommandText = "SP_IMPMD";
                            MDOgeneral.spComando.Connection = MDOgeneral.conexion;
                            MDOgeneral.spComando.CommandType = CommandType.StoredProcedure;
                            MDOgeneral.spComando.Parameters.Clear();

                            //Input
                            MDOgeneral.spComando.Parameters.Add("pnu_lote", Oracle.DataAccess.Client.OracleDbType.Int32).Value = selresumen.numLote;
                            MDOgeneral.spComando.Parameters.Add("pva_nroent", Oracle.DataAccess.Client.OracleDbType.Varchar2, 40).Value = strEntrega;

                            //Output salidas
                            MDOgeneral.spComando.Parameters.Add("pva_result", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output;
                            MDOgeneral.spComando.Parameters.Add("pva_errusu", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output;
                            MDOgeneral.spComando.ExecuteNonQuery();

                            StrComandoDado = "COPY";//FJRF - Enviamos el comando que vamos a ejecutar
                            StrRutaPlano = MDOgeneral.strRutaImpresionDocumentos;//FJRF - Cargamos la ruta del archivo plano donde la deja el sp
                            StrNombreDocumento = "LMD" + Convert.ToString(selresumen.numLote).Trim().PadLeft(5,'0') + ".LMD";//FJRF - Armamos el nombre del documento
                            StrRutaImpresionLPT2 = MDOgeneral.strImpresionLPT2;//FJRF - Enviamos la ruta de impresion -  esto es como decir (@"\\frar01\epson_javier")

                            StrLineaAEjecutar = StrComandoDado + " " + StrRutaPlano + StrNombreDocumento + " " + StrRutaImpresionLPT2;//FJRF - Armamos la linea de comando a ejecutar

                            EjecutarComando(StrLineaAEjecutar);//FJRF - Ejecutamos el comando dado en la linea
                        }
                    }
                }

            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void EjecutarComando(string StrComando)//FJRF - Este procedimiento ejecuta un comando en dos (CMD)
        {
            System.Diagnostics.Process proc = new System.Diagnostics.Process();
            proc.EnableRaisingEvents = false;
            proc.StartInfo.FileName = "cmd";
            proc.StartInfo.RedirectStandardInput = true;
            proc.StartInfo.RedirectStandardOutput = true;
            proc.StartInfo.CreateNoWindow = true;
            proc.StartInfo.UseShellExecute = false;
            proc.Start();
            proc.StandardInput.WriteLine(StrComando);
            proc.StandardInput.Flush();
            proc.StandardInput.Close();
            proc.Close();
        }

        private void ImprimirCystalReport(String strEntrega)
        {
            try
            {
                Mouse.OverrideCursor = Cursors.Wait;

                DataSet ds = new DataSet("dsTallas");

                #region Encabezado
                DataTable dtEncabezado = new DataTable("dtEncabezado");
                dtEncabezado.TableName = "dtEncabezado";
                dtEncabezado.Columns.Add("Lote", System.Type.GetType("System.Int32"));
                dtEncabezado.Columns.Add("Fecha", System.Type.GetType("System.String"));
                dtEncabezado.Columns.Add("Total", System.Type.GetType("System.Int32"));
                dtEncabezado.Columns.Add("STREMPRESA", System.Type.GetType("System.String"));
                dtEncabezado.Columns.Add("strEntrega", System.Type.GetType("System.String"));
                DataRow drE = dtEncabezado.NewRow();
                drE["Lote"] = selresumen.numLote;
                drE["Fecha"] = selresumen.dtmFecha.ToString("dd/MM/yyyy");
                drE["Total"] = selresumen.numTotal;
                drE["STREMPRESA"] = MDOgeneral.strEmpresaImprime;
                drE["strEntrega"] = strEntrega;
                dtEncabezado.Rows.Add(drE);
                #endregion

                #region Detalle
                MDOgeneral.spComando.CommandText = "SP_CARGARLOTEMD";
                MDOgeneral.spComando.Connection = MDOgeneral.conexion;
                MDOgeneral.spComando.CommandType = CommandType.StoredProcedure;
                MDOgeneral.spComando.Parameters.Clear();

                //Input
                MDOgeneral.spComando.Parameters.Add("pnu_lote", Oracle.DataAccess.Client.OracleDbType.Int32).Value = selresumen.numLote;
                MDOgeneral.spComando.Parameters["pnu_lote"].Direction = ParameterDirection.Input;

                //Output
                MDOgeneral.spComando.Parameters.Add("pva_result", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output;
                MDOgeneral.spComando.Parameters.Add("pva_errusu", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output;
                MDOgeneral.spComando.ExecuteNonQuery();

                string query = "select a.NROORD_TMP,a.CODREF_TMP,a.CODCOL_TMP,a.NOMREF_TMP,a.NOMCOL_TMP,a.TALREF_TMP,a.T1_TMP,a.T2_TMP,a.T3_TMP,a.T4_TMP,a.T5_TMP,a.T6_TMP,a.T7_TMP,a.T8_TMP,a.T9_TMP,a.T10_TMP,a.T11_TMP,a.T12_TMP,a.T13_TMP,a.T14_TMP,a.T15_TMP,a.T16_TMP,a.T17_TMP,a.T18_TMP,a.T19_TMP,a.T20_TMP,a.TOT_TMP, b.codcli_eop, c.subcli_epc, TO_CHAR(b.nroped_eop) as nroped_eop from tmplotep a inner join encordp b on a.NROORD_TMP = b.nroord_eop inner join encppcp c on b.nroped_eop = c.nroped_epc and b.codcli_eop = c.codcli_epc order by a.nroord_tmp, a.codref_tmp, a.codcol_tmp ";
                DataTable dtDetalle = _mod.consulta(query);
                dtDetalle.TableName = "dtDetalle";
                #endregion

                #region Tallas
                string strTallas = "";
                string strTallaAnterior = "";
                foreach (DataRow drt in dtDetalle.Rows)
                {
                    if (strTallaAnterior != drt["TALREF_TMP"].ToString())
                    {
                        strTallas = strTallas + drt["TALREF_TMP"].ToString() + "-";
                        strTallaAnterior = drt["TALREF_TMP"].ToString();
                    }
                }
                MDOgeneral.spComando.CommandText = "SP_TALLAJES";
                MDOgeneral.spComando.Connection = MDOgeneral.conexion;
                MDOgeneral.spComando.CommandType = CommandType.StoredProcedure;
                MDOgeneral.spComando.Parameters.Clear();

                //Input
                MDOgeneral.spComando.Parameters.Add("pva_tallajes", Oracle.DataAccess.Client.OracleDbType.Varchar2, 20).Value = strTallas;
                MDOgeneral.spComando.Parameters["pva_tallajes"].Direction = ParameterDirection.Input;

                //Output
                MDOgeneral.spComando.Parameters.Add("pva_result", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output;
                MDOgeneral.spComando.Parameters.Add("pva_errusu", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output;
                MDOgeneral.spComando.ExecuteNonQuery();

                DataTable dtTallas = _mod.consulta("select CODTAL_TMP AS CODTAL, T1_TMP AS T1, T2_TMP AS T2, T3_TMP AS T3, T4_TMP AS T4, T5_TMP AS T5, T6_TMP AS T6, T7_TMP AS T7, T8_TMP AS T8, T9_TMP AS T9, T10_TMP AS T10, T11_TMP AS T11, T12_TMP AS T12, T13_TMP AS T13, T14_TMP AS T14, T15_TMP AS T15, T16_TMP AS T16, T17_TMP AS T17, T18_TMP AS T18, T19_TMP AS T19, T20_TMP AS T20 from TMPTITULOSTALLA order by CODTAL_TMP, ORDEN_TMP asc");
                dtTallas.TableName = "dtTallas";
                #endregion

                DataTable dtE = new DataTable("dtEncPed");
                dtE.TableName = "dtEncPed";
                DataTable dtD = new DataTable("dtDetPed");
                dtD.TableName = "dtDetPed";

                ds.Tables.Add(dtEncabezado);
                ds.Tables.Add(dtDetalle.Copy());
                ds.Tables.Add(dtTallas.Copy());
                ds.Tables.Add(dtE);
                ds.Tables.Add(dtD);

                Vista vista = new Vista { ds = ds, reporte = @"reportes\rptMontajeaDespachos.rpt" };
                vista.Show();

                Mouse.OverrideCursor = Cursors.Arrow;
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        public void Salir(Object frmformulario)
        {
            ((Window)frmformulario).Close();
        }

        #endregion
    }

}
